package me.huha.utils;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * @Title: DownLoadUtils.java
 * @Author: Yepx
 * @mail: yepx2013@gmail.com
 * @CreateTime: 2017年9月29日 上午11:55:13
 * @Todo: 下载工具类
 */
public class DownLoadUtils {
	
	private static Logger logger = LoggerFactory.getLogger(DownLoadUtils.class);
	
	 public static void main(String[] args) {  
        try{  
            downLoadFromUrl("http://static.daily.huha.me/20170731115216/temp.json","Iz22Y3.json","d:/test");  
        }catch (Exception e) {  
            // TODO: handle exception  
        	System.err.println(e.getMessage());
        }  
     }
	 
	/** 
     * 从网络Url中下载文件 
     * @param urlStr 
     * @param fileName 
     * @param savePath 
     * @throws IOException 
     */  
    public static String downLoadFromUrl(String urlStr,String fileName, String savePath){  
       
    	String fliePach = "";
    	
    	URL url;
		try {
			url = new URL(urlStr);
			HttpURLConnection conn = (HttpURLConnection)url.openConnection();    
            //设置超时间为3秒  
		    conn.setConnectTimeout(3*1000);  
		    //防止屏蔽程序抓取而返回403错误  
		    conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");  
		
		    //得到输入流  
		    InputStream inputStream = conn.getInputStream();    
		    //获取自己数组  
		    byte[] getData = readInputStream(inputStream);      
		
		    //文件保存位置  
		    File saveDir = new File(savePath);  
		    if(!saveDir.exists()){  
		        saveDir.mkdir();  
		    }  
		    File file = new File(saveDir+File.separator+fileName);      
		    FileOutputStream fos = new FileOutputStream(file);       
		    fos.write(getData);
		    if(fos!=null){  
		        fos.close();    
		    }  
		    if(inputStream!=null){  
		        inputStream.close();  
		    }  
		
		    logger.info("info:"+url+" download success"); 
		    fliePach = savePath + "/" + fileName;
		    
		    logger.info(fliePach);

		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}    
        return fliePach;
    }
    
    /** 
     * 从输入流中获取字节数组 
     * @param inputStream 
     * @return 
     * @throws IOException 
     */  
    public static byte[] readInputStream(InputStream inputStream) throws IOException {    
        byte[] buffer = new byte[1024];    
        int len = 0;    
        ByteArrayOutputStream bos = new ByteArrayOutputStream();    
        while((len = inputStream.read(buffer)) != -1) {    
            bos.write(buffer, 0, len);    
        }    
        bos.close();    
        return bos.toByteArray();    
    }
    
 public static String getDownPath(){
    	
    	String uploadPath = System.getProperty("user.dir");
		uploadPath = uploadPath + "/temp";

		System.out.println(uploadPath);

		File file = new File(uploadPath);
		if(!file.exists()){
			FileOperateUtils.createFolder(uploadPath);
		}
		
		return uploadPath;
    }
}
